package cn.tedu.smartos.base.config;

import cn.tedu.smartos.base.interceptor.JwtInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class WebConfig implements WebMvcConfigurer {
//    @Value("${smartos.upload.avatar-path}")
//    private String avatarPath;
//    @Value("${smartos.upload.avatar-url-prefix}")
//    private String avatarUrlPrefix;
    @Value("${smartos.upload.avatar-path}")
    private String avatarPath;


    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")//   /** 表示在后端允许匹配客户端发过来的任意请求
                .allowedHeaders("*")//请求带任意头都可以
                .allowedMethods("*")//任意请求方式都可以 get/post/put...
                .allowedOriginPatterns("*")//任意域都可以(任意请求地址或端口)
                .allowCredentials(true)//请求可以携带会话相关信息(cookie/session)
                .maxAge(3600);//同一请求一小时内不再检测 直接放行


    }

    /* ---------- 静态资源映射（关键） ---------- */
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/avatars/**")
                .addResourceLocations("file:" + avatarPath);
    }


    @Autowired
    private JwtInterceptor jwtInterceptor;

//    @Override
//    public void addInterceptors(InterceptorRegistry registry) {
//        registry.addInterceptor(jwtInterceptor)
//                .addPathPatterns("/**")
//                .excludePathPatterns(
//                        "/api/v1/users/login",
//                        "/api/v1/users/register",
//                        // Swagger & Knife4j 相关路径
//                        "/doc.html",           // Knife4j 增强文档入口
//                        "/swagger-ui/**",      // Swagger UI 资源
//                        "/swagger-resources/**", // Swagger 资源
//                        "/v2/api-docs",        // Swagger 文档生成
//                        "/v3/api-docs/**",     // OpenAPI 3.0 文档
//                        "/webjars/**",         // Webjar 资源
//                        "/favicon.ico"         // 网站图标
//                );
//    }
}